import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

public class Test {
    static{
        i=0;

    }
    static int i = 1;

    public static void main(String[] args) throws NoSuchFieldException {
//        Class clazz = Test.class;
//        Field i = clazz.getDeclaredField("i");
//
//        System.out.println(Modifier.isPrivate(i.getModifiers()));

        method2();

        /**
         * 验证String类中hashCode()方法的验证
         * 及字节码层面的几种代码写法的区别。
         */
        String s = new String("Lee").intern();
        String s1 = new String("l");
        String s2 = "L";
        System.out.println(s.hashCode());
    }

    public void method(){
        String s3 = new String("1") + new String("1");
        //创建了几个对象？
        /**
         * 一开始创建了一个StringBuilder
         * 然后，创建一个1，并放入池中。这里是两个对象
         * 再创建一个1。这里是一个对象。
         * 最后调用toString()方法，创建一个堆中的对象。
         */
    }

    /**
     * 测试Java中的赋值是否是直接 引用  堆中 的对象。
     */
    public static void method2(){
        StringBuffer stringBuffer = new StringBuffer("124");
        StringBuffer stringBuffer1=stringBuffer;
        stringBuffer.append("----");
        System.out.println(stringBuffer);
        System.out.println(stringBuffer1);
        System.out.println(stringBuffer==stringBuffer1);
    }


    public static void method1(){
        Runtime.getRuntime().gc();
    }
}
class B{
    public void method1(){
        System.out.println(Test.i);
        new String("123").intern();
    }
}

